草庐IT

Where 条件

全部标签

mysql - 在 WHERE … IN 中启用重复项?

我想使用一个简单的查询来减少表中的值,如下所示:UPDATE`Table`SET`foo`=`foo`-1WHERE`bar`IN(1,2,3,4,5)这在上面的示例中效果很好,其中IN列表仅包含唯一值,因此每个匹配行的foo列都会减1。问题是当列表包含重复项时,例如:UPDATE`Table`SET`foo`=`foo`-1WHERE`bar`IN(1,3,3,3,5)在这种情况下,我希望bar为3的行递减三倍(或递减三),并且1和5减1。有没有办法改变行为,或者我可以使用替代查询来获得所需的行为?我专门使用MySQL5.7,以防有任何MySQL特定的解决方法有用。更新:我正在用脚本

mysql - MYSQL 条件唯一约束

在postgres中,我们定义了一个约束,本质上允许我们将具有特定值的表中的条目数限制为一个。我们创建了这个约束:在list_group(visitor_uid)wherelist_type='default'上创建唯一索引list$default$uk;这意味着唯一约束仅在list_type='default'时应用,因此表中每个访问者只能有一个“默认”列表。看起来MySql不支持唯一约束的附加位置。在MySQL的数据库模式中是否有另一种方法来支持这一点? 最佳答案 MYSQL不支持这种类型的约束。您应该改用存储过程来插入数据,这

条件执行指令 CMP

CMP可以比较两个数的关系,其本质就是一条减法指令,只是不会将运算结果保存到寄存器,因为对于CPU而言,比较两个数时只关心结果是false还是true指令格式:CMP  第一操作寄存器:参与比较的第一个数(只能是寄存器)第二操作数:参与比较的第二个数(既可以是寄存器,也可以是立即数)目录1、CMP实现条件判断的本质2、条件码以及条件码的使用3、小练习:使用ARM指令进行条件判断,并执行相应的语句1、CMP实现条件判断的本质CMP的本质就是一条减法指令,减法的结果会影响CPSR寄存器,CPU实际上是根据CPSR中的N、Z、C、V状态位来进行判断。以下面这条语句为例(假设R1和R2中存的是无符号数

mysql - 如何在 mysql 中创建条件(使用 'if' )?

此代码可以很好地找到特定日期内的可用房间,但无法显示已预订和取消的房间“酒店”有4个房间,其中1个已被预订和取消所以即使我取消了,select方法仍然给我3个结果。可能是因为第二个AND仍在运行。所以基本上我需要的是检查房间是否在所选日期被预订如果已经预订,检查是否取消如果已取消或未预订,请显示。否则不SELECTRoomNo,NightCostFROMroom,room_types,bookingWHEREtypeid=fk1_typeidanddouble_bed=1andsingle_bed=0ANDcanceled='1'in(SELECTcanceledfrombooking

mysql - 使用 UNION 在 VIEW 内级联 WHERE 子句

这没有解决,但我找到了原因:MySQLViewcontainingUNIONdoesnotoptimizewell...InotherwordsSLOW!原帖:我正在使用游戏的数据库。有两个相同的表equipment和safety_dep_box。要检查玩家是否有一件设备,我想检查两个表。我不想做两个查询,而是想利用MySQL中的UNION功能。我最近了解到我可以创建一个View。这是我的观点:CREATEVIEWvAllEquipASSELECT*FROMequipmentUNIONSELECT*FROMsafety_dep_box;View创建得很好。但是当我运行时SELECT*F

sql - 使用 HAVING 和 WHERE 查询

我正在尝试创建一个将合并以下两个查询的查询。SELECTcampgroundid,(3959*acos(cos(radians(37))*cos(radians(lat))*cos(radians(lng)-radians(-122))+sin(radians(37))*sin(radians(lat))))ASdistanceFROMcampgroundHAVINGdistance我尝试将它们放入IN,但它返回了一个语法错误,我不知道如何修复。我尝试只删除HAVING并组合查询,但它说它无法弄清楚distance是什么。任何帮助表示赞赏。谢谢。OUTPUT:[campgroundid

sql - 让 MySQL 从 LIKE 条件开始时忽略 "The"?

我有一个公司名称列表,想显示所有以某个字符开头的名称。d例如。所以查询是SELECT*FROMcompanyWHEREnameLIKE'd%'但是我也想要以“The”开头的公司SELECT*FROMcompanyWHEREnameLIKE'd%'ORnameLIKE'Thed%'但是当我们到达't'时,现在有一个棘手的问题,我想删除所有以'The'开头的那些同时保留其他以“t”开头的内容(并保留“TheTruffleHouse”之类的内容,其中“The”之后以“t”开头)。有什么想法吗?想在MySQL中保留逻辑... 最佳答案 SE

MySQL "ON"条件 - 它是做什么的?

首先让我解释一下,我已经搜索了至少一个小时以查找有关MySQL中使用的这个关键字的任何信息。问题是我用来查找有关它的信息的任何搜索引擎都会在最琐碎和无关的结果中匹配单词“ON”。我也没有运气浏览MySQL的文档。我看到on与INNERJOIN一起用作条件,但我不知道它的作用。一个用法的例子是SELECTt1.name,t2.salaryFROMemployeeASt1INNERJOINinfoASt2ONt1.name=t2.name;我知道“WHERE”和“HAVING”的区别分别是过滤行和过滤组的区别。不过,我无法想象什么是“ON”过滤器。我认为在使用INNERJOIN时可能需要过

mysql - 如何使用两个 where 子句优化 SQL 查询?

我的查询是这样的SELECT*FROMtbl1JOINtbl2ONsomething=somethingWHERE1AND(tbl2.date='$date'OR('$date'BETWEENtbl1.planAANDtbl1.planB))当我运行这个查询时,它比这个查询慢得多SELECT*FROMtbl1JOINtbl2ONsomething=somethingWHERE1AND('$date'BETWEENtbl1.planAANDtbl1.planB)或SELECT*FROMtbl1JOINtbl2ONsomething=somethingWHERE1ANDtbl2.date=

mysql查询问题WHERE date <

我有以下问题SELECT*,count(jx_commissions.commission_amount)ASsummeFROMjx_membersINNERJOINjx_commissionsONjx_commissions.mid=jx_members.midWHEREjx_commissions.date>'2011-01-01'GROUPBYjx_commissions.midORDERBYsummeDESCLIMIT1,20字段日期有日期格式,所有日期都有正确的格式Y-m-d但如果我使用此查询,我不会得到任何结果...如果我将日期更改为另一个日期,我会得到错误的结果...我认